a = 10 #这是第一个操作数a

"""
这是一个程序
是我的第一个python程序
"""

#
# b = 20.1
# c = 9.9

print("Hello Python")
print("Hello Python", end = "")
print(111)# Hello Python111

f = 10.1
print(f)

d = "Hello"
e = "python"
#推荐写法
print(f"{d} {e} !!!")

#旧写法
print("Hello %s" % d)
print("%s %s" % (d, e))

# 列表的相关测试

my_list = [431, 342, 5.254, "python"] #使用[]即可创建列表
my_list.append("hello") #向my_list尾部插入新元素
print(my_list) #[431, 342, 5.254, 'python', 'hello']
print(my_list[0]) #打印my_list索引为0的元素-》 下标也是从0开始的，与C的数组一致
print(my_list[-1]) #但需要注意，索引为负数时，会从后向前进行访问，而不是会报错越界访问
# print(my_list[my_list.len()]) #错误：本来打算调用len成员函数计算当前列表中具备的元素，
                          #并将其作为索引进行打印，但会发现该行代码解释出错，原因是list没有
                          #len这个成员函数，len是一个全局内置函数，需要获取一个变量的长度时直接使用len(变量名)就可以了
length = len(my_list)
print(my_list[length - 1]) # hello-》说明索引的最大值就是元素个数 - 1
print(my_list[-length]) # 431
# print(my_list[-length - 1]) # 报错，超出索引的最小范围-length

print(my_list[1:3]) #还可以像这样使用索引，这种方式被称之为切片

print(my_list[0 : length]) # 但使用切片时，由于获取的是左闭右开的数据，所以想要获取到最后一个元素时，
                           # 允许将区间的右边界设置为length

# 对第三个参数：步长的测试：当start或end需要缺省值时，python会根据步长选择不同的缺省值，
# 简单来说，当步长为正数时，start = 0，end = length，当步长为负数时，start = -1，end = -length - 1
# 需要注意的是，步长的缺省值为1
print(my_list[0::-1]) # 431，end被缺省为了-length - 1
print(my_list[:length:1]) # [431, 342, 5.254, 'python', 'hello']，start被缺省为了0
print(my_list[::-1]) # ['hello', 'python', 5.254, 342, 431]，start被缺省为length，end被缺省为-len(my_list)-1
# print(my_list[length]) # 报错，length超出索引最大范围

# print(my_list[89724]) #当索引的值超出范围，会直接报错，但由于python是解释型语言，所以，
                    #前面的代码还是会正常执行的，不过测试发现，虽然前面的代码可以运行，但是后面的代码就不会了

# my_list.sort()  # 报错，虽然列表内置了sort成员函数，但当其中数据类型不可比较时，会直接报错


# 集合相关的测试
my_set = {"331", 12, 85}
print(my_set)
print(len(my_set))# 3
if 12 not in my_set:
    print("12 not in my_set")
else:
    print("12 in my_set")# 12 in my_set


# 元组
num = 10
my_const_list = (num, 324, 53, my_list)
print(my_const_list)# (10, 324, 53, [431, 342, 5.254, 'python', 'hello'])
num = 20
print(my_const_list)# ->说明只不过是将num的值插入到元组中，改变num不会改变元组中的num
# my_const_list[0] = 10 # 报错，元组中的不可变类型不可被更改
my_const_list[3][0] = 1
print(my_const_list)# (10, 324, 53, [1, 342, 5.254, 'python', 'hello'])
print(my_list)# [1, 342, 5.254, 'python', 'hello']

# 字典
my_map = { 1: "one", 3: "three", 2: "two"}
print(my_map)# {1: 'one', 3: 'three', 2: 'two'}
print(my_map[1])# one
# print(my_map["two"])# -》报错，只能通过key进行查询


#条件判断
if 1 > 2:
    print("1 > 2")
elif 2 > 4:
    print("2 > 4")
else:
    print("上面都不对")

# 嵌套条件判断
animals = {"狗", "猫"}
if "狗" in animals:
    if "狗" == "猫":
        print("狗 == 猫")
    else:
        print("狗 == 狗")# 狗 == 狗
else:
    print("无事发生")




